package com.hll.spring_book.mapper.book;

import com.hll.spring_book.pojo.Book;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author: Mr.Hu
 * @create: 2021-03-17 22:25
 */
@Repository
public interface BookMapper {
  /**
   * 通过ID查询单条数据
   *
   * @param id 主键
   * @return 实例对象
   */
  Book queryById(Integer id);
  /**
   * 通过实体类作为筛选条件查询,其中只对实体类中非null属性进行查询，得益于if标签
   *
   * @param book 实例对象
   * @return 对象列表
   */
  List<Book> queryAll(Book book);

  /**
   * 新增数据
   *
   * @param book 实例对象
   * @return 影响行数，但同时book.id也被设置了插入记录的id，可以看xml中配置
   */
  int insert(Book book);

  /**
   * 修改数据
   *
   * @param book 实例对象
   * @return 影响行数
   */
  int update(Book book);

  /**
   * 通过主键删除数据
   *
   * @param id 主键
   * @return 影响行数
   */
  int deleteById(Integer id);

  /**
   * @param name 书名
   * @param author 作者名
   * @return: 同作者同名书籍数量，实际上就是查询时是否存在重复书籍，本来想调用queryALL的 但那是模糊查询
   *     <p>其实最好是以实体类book作为参数，我这是为了方便才这么写的
   */
  int checkBookExist(String name, String author);
}
